<?php
namespace app\index\controller;
use app\index\controller\Base;
use app\index\model\Teacher as TeacherModel;
use think\Request;

class Teacher extends Base{
    // 教师列表
    public function teacherList(){
        // 获取教师表所有信息
        $teacher=TeacherModel::all();

        // 获取记录数据
        $count=TeacherModel::count();

        // 遍历teacher表数据
        foreach($teacher as $value){
            $data=[
                'id'=>$value->id, //主键
                'name'=>$value->name, //姓名
                'degree'=>$value->degree, //学历
                'school'=>$value->school, //毕业学校
                'mobile'=>$value->mobile, //手机号
                'hiredate'=>$value->hiredate, //入职时间
                'status'=>$value->status, //启用状态
                // 用关联方法grade属性方式访问grade表中数据
                'grade'=>isset($value->grade->name)?$value->grade->name:'<span style="color:red">未分配</span>'
            ];
            // 每次关联查询的结果，保存到数组
            $teacherList[]=$data;
        }

        // 页面分配数据
        $this->assign('teacherList',$teacherList);
        $this->assign('count',$count);

        return $this->fetch();
    }

    // 停用和启用
    public function setStatus(Request $request){
        /**
         * 1.获取id
         * 2.根据id查询数据状态
         * 3.判断状态更新状态
         */

        // 获取id
        $teacher_id=$request->param('id');

        // 获取数据
        $result=TeacherModel::get($teacher_id);

        // 判断并更新状态
        if($result->getData('status')==1){
            TeacherModel::update(['status'=>0],['id'=>$teacher_id]);
        }else{
            TeacherModel::update(['status'=>1],['id'=>$teacher_id]);
        }

    }

    // 渲染编辑界面
    public function teacherEdit(Request $request){
        /**
         * 1.获取id
         * 2.根据id查询数据
         * 3.分配数据给页面
         * 4.渲染页面
         */

        // 获取id
        $teacher_id=$request->param('id');

        // 查询数据
        $result=TeacherModel::get($teacher_id);

        // 分配数据
        $this->assign('teacher_info',$result);
        // 将grade表的所有数据赋值给当前模板
        $this->assign('gradeList',\app\index\model\Grade::all());

        // 渲染模板
        return $this->fetch();
    }

    // 编辑更新数据
    public function doEdit(Request $request){
        /**
         * 1.获取表单数据,排除关联teacher字段
         * 2.设置更新条件
         * 3.更新数据
         * 4.设置返回数据初始值
         * 5.检测更新结果
         * 6.返回数据
         */

        // 获取数据
        $data=$request->except('grade');

        // 设置更新条件
        $condition=['id'=>$data['id']];

        // 更新数据
        $result=TeacherModel::update($data,$condition);

        // 设置返回数据
        $status=0;
        $message='更新失败';

        //检测更新结果
        if($result==true){
            $status=1;
            $message='更新成功';
        }

        return ['status'=>$status,'message'=>$message];
    }

    // 软删除
    public function deleteTeacher(Request $request){
        /**
         * 1.获取id
         * 2.更新删除状态
         * 3.执行删除
         */

        // 获取id
        $teacher_id=$request->param('id');

        // 更新状态
        TeacherModel::update(['is_delete'=>1],['id'=>$teacher_id]);

        // 执行删除
        TeacherModel::destroy($teacher_id);
    }

    // 批量恢复
    public function unDelete(){
        TeacherModel::update(['delete_time'=>NULL],['is_delete'=>1]);
    }

    // 渲染添加界面
    public function teacherAdd(){
        // 将班级表中所有数据查出来赋值给当前模板
        $this->assign('gradeList',\app\index\model\Grade::all());

        return $this->fetch();
    }

    // 插入数据
    public function doAdd(Request $request){
        /**
         * 1.获取数据
         * 2.插入数据库
         * 3.设置返回数据初始值
         * 4.检测插入结果
         * 5.返回数据给模板
         */

        // 获取数据
        $data=$request->param();

        // 插入数据
        $result=TeacherModel::create($data);

        // 设置返回初始值
        $status=0;
        $message='添加失败';

        // 检测添加结果
        if($result==true){
            $status=1;
            $message='添加成功';
        }

        // 返回数据
        return ['status'=>$status,'message'=>$message];
    }
}
